package com.wooboo.dsp.redis.util;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.ShardedJedis;

public abstract class AbstractSharedRedis {

	 public abstract ShardedJedis getJedis();
	 /**
	  * 判断key是否存在
	  * */
	 public boolean exists(String key){
		 ShardedJedis jedis=getJedis();
		 boolean b = jedis.exists(key);
		 jedis.close();
		 return b;
	 }
	 /**
	  * 设置key-value
	  * */
	 public void set(String key,String value){
		 getJedis().set(key, value);
	 }
	 /**
	  * 将 key 的值设为 value，当且仅当 key 不存在。 
      * 若给定的 key 已经存在，则 SETNX 不做任何动作。 
      * SETNX 是SET if Not eXists的简写。
      * set if not exists.
	  * */
	 public void setnx(String key,String value){
		 getJedis().setnx(key, value);
	 }
	 /**
	  * 追加字符串
	  * */
	 public void append(String key,String value){
		 getJedis().append(key, value);
	 }
	 /**
	  * 获取value
	  * */
	 public String get(String key){
		 ShardedJedis jedis=getJedis();
		 String value=jedis.get(key);
		 jedis.close();
		 return value;
	 }
	 /**
	  * 删除key
	  * */
	 public Long del(String key){
		
		 return getJedis().del(key);
	 }
	 
	 
	 /**
	  * 值保存过期值
	  * */
	 public void expire(String key,Integer seconds){
		 getJedis().expire(key, seconds);
	 }
	 /**
	  *存储value，并设置seconds时间后过期。
	  * */
	 public void setex(String key,Integer seconds,String value){
		 getJedis().setex(key, seconds, value);
	 }
	 
	 
	 /**
	  * 获取所匹配的key值
	  * */
	 public Set<String> keys(String pattern){
		 return getJedis().hkeys(pattern);
	 }
	 /**
	  * 获取改key的剩余生存时间
	  * */
	 public Long ttl(String key){
		 return getJedis().ttl(key);
	 }
	
	 /**
	  * list api lpush
	  * */
	 public void lpush(String key,String value){
		 getJedis().lpush(key, value);
	 }
	 
	
}
